{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'/Users/shrilakshmisbonageri/Desktop/UW/DIRECT/PROJECT/BattDeg/examples'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Replace this with the path to battdeg.py module in your system\n",
    "sys.path.insert(0, '/Users/shrilakshmisbonageri/Desktop/UW/DIRECT/PROJECT/BattDeg/battdeg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import battdeg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Reading all the files for a CX2 cell and predicting discharge capacity.\n",
    "##### This example considers reading all the files for the cell CX2_16"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The path of the directory hosting the folder containing the datafiles\n",
    "data_dir = '/Users/shrilakshmisbonageri/Desktop/UW/DIRECT/PROJECT/BattDeg/battdeg/data'\n",
    "# The folder name which has datacells of a cell\n",
    "file_name_format = 'CX2_16'\n",
    "# The sheet number in the excel files containing the data.\n",
    "sheet_name = 1\n",
    "# The ignore indices can be used for PL Samples files if required.\n",
    "ignore_file_indices = []\n",
    "df_out = battdeg.file_reader(data_dir, file_name_format, sheet_name, ignore_file_indices)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Current(A)</th>\n",
       "      <th>Voltage(V)</th>\n",
       "      <th>discharge_cycle_ah</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>4.102870</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>4.102870</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>4.102870</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>4.103032</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>4.102870</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Current(A)  Voltage(V)  discharge_cycle_ah\n",
       "0         0.0    4.102870                 0.0\n",
       "1         0.0    4.102870                 0.0\n",
       "2         0.0    4.102870                 0.0\n",
       "3         0.0    4.103032                 0.0\n",
       "4         0.0    4.102870                 0.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The below dataframe can be used for prediction.\n",
    "df_out.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The function 'model_prediction' in the battdeg module can be used to predict discharge\n",
    "# capacity from the time series data obtained from 'file_reader' function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /Users/shrilakshmisbonageri/miniconda3/envs/keras/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n",
      "WARNING:tensorflow:From /Users/shrilakshmisbonageri/miniconda3/envs/keras/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.cast instead.\n"
     ]
    }
   ],
   "source": [
    "yhat = battdeg.model_prediction(df_out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a2be33c50>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xd8lFX2+PHPSYEAgdBCLwm914D0IiBFBFER2UXFArq6rmtBZfVn/yoKiBUBUVHXVVdXBRUElSq9I0gLPdSEnpA+9/fHMzOEkDKZyWQyk/N+vQKZZ56ZOZMp57nPvfdcMcaglFJKAQT5OgCllFLFhyYFpZRSTpoUlFJKOWlSUEop5aRJQSmllJMmBaWUUk6aFJRSSjlpUlBKKeWkSUEppZRTiK8DKKiqVauaqKgoX4ehlFJ+ZePGjQnGmMj89vO7pBAVFcWGDRt8HYZSSvkVETnkyn56+kgppZSTJgWllFJOmhSUUko5+V2fglIlWXp6OnFxcaSkpPg6FFVMhYWFUadOHUJDQ926vSYFpfxIXFwc5cuXJyoqChHxdTiqmDHGcPr0aeLi4oiOjnbrPvT0kVJ+JCUlhSpVqmhCUDkSEapUqeJRS1KTglJ+RhOCyoun7w9NCkqpgJKYkk5qeqavw/BbmhSU16Vn2vh87SEybboeeCAIDg6mXbt2tGrVipEjR3Lp0iW372vp0qUMHToUgHnz5jFp0qRc9z137hzTp0/P9z73JySx++RF5+Xnn3+eKVOmuB1jYd9PcadJQXndrOX7efq77fxvY5yvQ1GFoEyZMmzZsoXt27dTqlQpZsyYccX1xhhsNluB73fYsGE89dRTuV7valJQntGkoLwuITEVgIupGT6ORBW2nj17Ehsby8GDB2nevDkPPPAAHTp04MiRIyxatIiuXbvSoUMHRo4cSWJiIgA///wzzZo1o0ePHnz77bfO+5ozZw5///vfATh58iQjRoygbdu2tG3bllWrVvHUU0+xb98+2rVrx4QJEwCYPHkynTp1ok2bNjz33HPO+/rg7Sk0bdqU/v37s3v37qviPn/+PFFRUc7kdenSJerWrUt6ejoffPABnTp1om3bttx88805toT69OnjLLeTkJCAox5bZmYmEyZMcMY0c+ZMAI4fP06vXr2cLawVK1Z4+qf3Gh2SqrzO2M8aBWn/aKF64Ycd/HnsQqHeZ4taFXjuhpYu7ZuRkcGCBQsYNGgQALt37+bjjz9m+vTpJCQk8PLLL/Prr79Srlw5XnvtNd544w2eeOIJxo0bx+LFi2nUqBGjRo3K8b7/8Y9/0Lt3b7777jsyMzNJTExk0qRJbN++nS1btgCwaNEi9u7dy7p16zDGMGzYMJYvX86xRBs/z/uWrZs3k5GRQYcOHejYseMV9x8REUHbtm1ZtmwZffv25YcffmDgwIGEhoZy0003MW7cOACeeeYZPvzwQx566CGX/iYffvghERERrF+/ntTUVLp37851113Ht99+y8CBA3n66afJzMz06JSbt2lSUF7n6EsI0lEzASE5OZl27doBVkvhnnvu4dixY9SvX58uXboAsGbNGv7880+6d+8OQFpaGl27dmXXrl1ER0fTuHFjAMaMGcOsWbOueozFixfz6aefAlYfRkREBGfPnr1in0WLFrFo0SLat28PQGJiInv37mX3kVNcO2goZcuWBazTUjkZNWoUX331FX379uXLL7/kgQceAGD79u0888wznDt3jsTERAYOHOjy32bRokVs27aNb775BrBaJHv37qVTp07cfffdpKenc+ONNzr/fsWRJgXldTbjSAo+DiTAuHpEX9gcfQrZlStXzvm7MYYBAwbwxRdfXLHPli1bCm1IrTGGiRMnct99912x/YnnX3XpMYYNG8bEiRM5c+YMGzdu5NprrwVg7NixfP/997Rt25Y5c+awdOnSq24bEhLiPPWUdU6AMYZ33nknx0SyfPlyfvrpJ26//XYmTJjAHXfcUZCnW2S0T0F5nWPQkY6vLzm6dOnCypUriY2NBaxz9nv27KFZs2YcOHCAffv2AVyVNBz69evH+++/D1jn6S9cuED58uW5ePHyqKKBAwfy0UcfOfsqjh49yqlTp+h4TTcW//wjycnJXLx4kR9++CHHxwgPD6dz5848/PDDDB06lODgYAAuXrxIzZo1SU9P5/PPP8/xtlFRUWzcuBHA2SpwxPT++++Tnp4OwJ49e0hKSuLQoUNUq1aNcePGcc8997Bp0ybX/pA+oC0F5XXG3lII1qZCiREZGcmcOXMYPXo0qanWQIOXX36ZJk2aMGvWLK6//nqqVq1Kjx492L59+1W3f+uttxg/fjwffvghwcHBvP/++3Tt2pXu3bvTqlUrBg8ezOTJ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting yhat(model prediction) and real discharge capacity\n",
    "# from df_out\n",
    "plt.plot(yhat[0:1000],label='Predicted values')\n",
    "plt.plot(df_out['discharge_cycle_ah'][0:1000],label='Experimental values')\n",
    "plt.xlabel('Time steps')\n",
    "plt.ylabel('Discharge Capacity(Ah)')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
